| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import { NextRequest, NextResponse } from 'next/server';
- const API_URL = process.env.API_URL;
- export async function GET(_: NextRequest, { params }: { params: Promise<{ uuid: string }> })
- {
- const { uuid } = await params;
- try {
- const res = await fetch(`${API_URL}/api/forum/post/link/${uuid}`, {
- cache: 'no-store',
- redirect: 'manual'
- });
- // 백엔드에서 리다이렉트 응답이 오면 그대로 전달
- if (res.status >= 300 && res.status < 400) {
- const location = res.headers.get('location');
- if (location) {
- return NextResponse.redirect(location);
- }
- }
- if (!res.ok) {
- return new NextResponse(null, {
- status: res.status
- });
- }
- // JSON 응답인 경우 (URL 정보 반환)
- const contentType = res.headers.get('content-type') || '';
- if (contentType.includes('application/json')) {
- const data = await res.json();
- if (data?.data?.url) {
- return NextResponse.redirect(data.data.url);
- }
- }
- return new NextResponse(null, {
- status: 404
- });
- } catch {
- return new NextResponse(null, {
- status: 502
- });
- }
- }
|